******************************* * 80-ZEICHEN MIT GRAPHICS 8 * * * * PETER FINZEL 1986 * * * * ASSEMBLER: ATMAS-II * ******************************* * BETRIEBSSYSTEMADRESSEN: OLDCOL EQU $5B X-POS. DES CURSORS OLDADR EQU $5E CURSORADRESSE CHBAS EQU $02F4 PAGENR. DES ZEICHENSATZES * BELEGUNG DER ZEROPAGE ORG $CB BILD EQU * ZEIGER IN HI- RES BILDSCHIRM XOFFSET EQU *+2 ABSTAND IN BYTES VON OLDADR ZSATZ EQU *+3 ZEIGER IN ZEICHENSATZ STRING EQU *+5 ZEIGER IN TEXTSTRING LAENGE EQU *+7 LAENGE DES STRINGS SINDEX EQU *+8 INDEX IN STRING SPALTE EQU *+9 SCHREIBSPALTE FLAG80 EQU *+10 8O-ZEICHEN AUSGABE ATTBUT EQU *+11 DOPPELT HOHE ZEICHEN ZALT EQU *+12 ZWISCHENSPEICHER HILF EQU *+13 HILFSREGISTER **************************************** * 80-ZEICHEN IN GRAPHICS 8 * AUFRUF: X=USR(1536,ADRESSE,LAENGE,ATT) * ATTRIBUT: 0: NORMAL, 40 ZEICHEN * 64: DOPPELT HOCH, 40 ZEICHEN * 128: NORMAL , 80 ZEICHEN * 192: DOPPELT HOCH, 80 ZEICHEN **************************************** ORG $0600 PROGRAMM IN ZEROPAGE PLA # DER ARGS PLA STRINGADRESSE STA STRING+1 PLA LSB STA STRING PLA MSB DER LAENGE PLA LAENGE STA LAENGE (MAX. 255 ZEICHEN) PLA PLA ATTRIBUT STA ATTBUT ABLEGEN * * VORBESETZUNGEN, SCHREIBSPALTE BERECHNEN * LDA #0 INDEX IN STRING STA SINDEX ZURUECKSETZEN STA XOFFSET STA FLAG80 LDA OLDCOL+1 POSITION DES STA HILF GRAPHIK-CURSORS LDA OLDCOL DURCH VIERTEILEN ROR HILF ERGIBT DIE SCHEIB- ROR ;SPALTE ROR HILF ROR STA SPALTE * * SCHLEIFE ZUR AUSGABE BEGINNT * WEITER LDA SPALTE ZEILENENDE? CMP #80 DANN NICHTS MEHR BCS W80ENDE AUSGEBEN! - > ROR ;FLAG FUER UNGERADE ROR FLAG80 SPALTENZAHL (TRICK!) LDA OLDADR CURSOR ADRESSE DES STA BILD LETZTEN PLOT-PUNKTES LDA OLDADR+1 UEBERNEHMEN STA BILD+1 * * ZEICHENCODE AUS STRING, ATASCII IN * INTERNEN CODE UMRECHNEN * LDY #0 STY ZSATZ+1 VORBESETZUNG LDY SINDEX LDA (STRING),Y ASCII-ZEICHEN IM AKKU AND #$7F INVERSBIT MASKIEREN CMP #96 JETZT UMWANDLUNG I BILDSCHIRMCODE BCS WENDE CODE STIMMT - > CMP #32 IST GRAPHIKZEICHEN? BCS ALPHA NEIN, IST ALPHAZEICHEN - > ORA #64 PLUS 64 BNE WENDE UMWANDLUNG FERTIG - > ALPHA SEC SBC #32 KORREKTUR BUCHSTABEN UND ZAHLEN * * ADRESSE DES BITMUSTERS IM ZEICHENSATZ * WENDE ASL ;BILDSCHIRMCODE MAL ASL ;ACHT IST ZEIGER IN ROL ZSATZ+1 DEN ZEICHENSATZ ASL ROL ZSATZ+1 STA ZSATZ LSB IST FERTIG CLC LDA ZSATZ+1 ADC CHBAS BASISADRESSE DES STA ZSATZ+1 ZEICHENSATZES DAZU * * SCHLEIFE ZUR AUSGABE EINES ZEICHENS * LDX #8 ACHT ZEILEN/ZEICHEN ZEILE LDY #0 LDA (ZSATZ),Y EINE ZEILE DES ZEICHENS BIT ATTBUT 40ER MODUS? BPL M2 JA - > JSR WNDEL80 IN 8OER UMWANDELN M2 JSR DATOUT AUSGEBEN BIT ATTBUT DOPPELT HOCH? BVC M3 NEIN - > JSR DATOUT M3 INC ZSATZ NAECHSTES ZEICHENMUSTER DEX BNE ZEILE NAECHST. ZEILE INC SPALTE NAECHSTE SPALTE BIT ATTBUT 40-ZEICHEN-MODUS? BPL M4 JA - > BIT FLAG80 UNGERADE ADRESSE? BMI M5 JA, DANN INDEX WEITER BPL M6 NEIN, INDEX BLEIBT! M4 INC SPALTE FUER 40ER MODUS 2 SPALTEN M5 INC XOFFSET VIDEORAM WEITER M6 INC SINDEX ZEIGER IN STRING DEC LAENGE NOCH ZEICHEN DA? BNE WEITER JAWOHL - > W80ENDE RTS * ************************************* * 40ER ZEICHENSATZ IN 80ER UMRECHNEN ************************************* * WNDEL80 STA ZALT 40ER ZEICHENMUSTER LDA #0 NEUES MUSTER STA HILF VORBESETZEN LDY #3 VIER BIT BEARBEITEN SPALTE80 LDA BITTAB,Y SPALTEN-MASKE BIT ZALT BIT GESETZT? BEQ W80NIX NEIN - > LDA U80TAB,Y UMRECHENTABELLE ORA HILF STA HILF W80NIX DEY SCHON ALLE SPALTEN? BPL SPALTE80 NEIN-> LDA HILF EBEN BERECHNETES MUSTER BIT FLAG80 BMI UNGER UNGERADE X-POSITION-> ASL ;SONST IN UNGERADE ASL ;POSITION SHIFTEN ASL ASL UNGER RTS * * TABELLEN ZUR UMWANDLUNG IN 80ER Z-SATZ * BITTAB DFB $01,$04,$10,$20 U80TAB DFB $01,$02,$04,$08 * ************************************* * BILD-DATEN IN SCREEN EINTRAGEN * ZEIGER AUF NAECHSTE GRAPHIKZEILE ************************************* * DATOUT PHA AKKU MERKEN. . . LDY XOFFSET ORA (BILD),Y MIT VORH. BILD VERKNUEPFEN STA (BILD),Y UND EINTRAGEN CLC LDA BILD NAECHSTE ZEILE IST ADC #40 40 BYTES WEITER STA BILD BCC DAT1 MSB NICHT VERGESSEN INC BILD+1 DAT1 PLA AKKU RESTAURIEREN RTS